#include "Renderer.h"

void Renderer::Draw(const VertexArray & va, const IndexBuffer & ib, const Shader&shader) const
{
	shader.Bind();
	va.Bind();
	ib.Bind();
	// 因为我们的index buffer已经指定了ibo，所以最后一个参数可以不传
	GLCall(glDrawElements(GL_TRIANGLES,  ib.GetCount(), GL_UNSIGNED_INT, nullptr));
	// 为了性能,正式发布的情况下，一般都不会在Draw完以后调用 Unbind 的，
	// 因为下次绑定会把上次的绑定冲掉(OpenGL 像个状态机一样工作)
	// 为了调试可以在后面加 shader,va,ib的Unbind调用，并用Debug下开启的宏包裹着
}

void Renderer::Clear() const
{
	/* Render here */
	glClear(GL_COLOR_BUFFER_BIT);
}